package model

import (
	"gorm.io/gorm"
)

type Goods struct {
	Id         int32   `gorm:"column:id;type:int UNSIGNED;primaryKey;not null;" json:"id"`
	Name       string  `gorm:"column:name;type:varchar(255);comment:商品名称;not null;" json:"name"`         // 商品名称
	Price      float64 `gorm:"column:price;type:decimal(10, 2);comment:商品价格;default:NULL;" json:"price"` // 商品价格
	Num        int32   `gorm:"column:num;type:int;comment:商品数量;default:NULL;" json:"num"`                // 商品数量
	UserId     int32   `gorm:"column:user_id;type:int;comment:用户ID;default:NULL;" json:"user_id"`          // 用户ID
	ActivityId int32   `gorm:"column:activity_id;type:int;comment:活动ID;default:NULL;" json:"activity_id"`  // 活动ID
}

func (g *Goods) TableName() string {
	return "goods"
}

func Paginate(page, pageSize int) func(db *gorm.DB) *gorm.DB {
	return func(db *gorm.DB) *gorm.DB {

		if page <= 0 {
			page = 1
		}
		
		switch {
		case pageSize > 100:
			pageSize = 100
		case pageSize <= 0:
			pageSize = 10
		}

		offset := (page - 1) * pageSize
		return db.Offset(offset).Limit(pageSize)
	}
}
